package com.qiandao.xuexitong.dto;

import com.qiandao.xuexitong.entity.AttendanceRecord;
import lombok.Data;

import java.time.LocalDateTime;
import java.util.List;

/**
 * 签到任务列表DTO
 */
@Data
public class AttendanceTaskListDTO {
    /**
     * 任务ID
     */
    private Long id;
    
    /**
     * 班级ID
     */
    private Long classroomId;
    
    /**
     * 班级名称
     */
    private String classroomName;
    
    /**
     * 签到类型
     */
    private Integer type;
    
    /**
     * 签到标题
     */
    private String title;
    
    /**
     * 开始时间
     */
    private LocalDateTime startTime;
    
    /**
     * 结束时间
     */
    private LocalDateTime endTime;
    
    /**
     * 状态：0-未结束，1-已结束
     */
    private Integer status;
    
    /**
     * 创建时间
     */
    private LocalDateTime createTime;
    
    /**
     * 总人数
     */
    private Integer totalCount;
    
    /**
     * 已签到人数
     */
    private Integer signedCount;
    
    /**
     * 签到率
     */
    private String signRate;
    
    /**
     * 签到记录列表
     */
    private List<AttendanceRecordDetail> records;

    /**
     * 学生签到详情列表
     */
    private List<StudentAttendanceDetailDTO> studentDetails;

    /**
     * 签到内容
     */
    private String content;

    @Data
    public static class StudentAttendanceDetailDTO {
        /**
         * 学生ID
         */
        private Long studentId;

        /**
         * 学生姓名
         */
        private String studentName;

        /**
         * 签到状态
         */
        private Integer status;

        /**
         * 签到时间
         */
        private LocalDateTime signTime;
    }

    @Data
    public static class AttendanceRecordDetail {
        /**
         * 记录ID
         */
        private Long id;

        /**
         * 任务ID
         */
        private Long taskId;

        /**
         * 学生ID
         */
        private Long studentId;

        /**
         * 学生姓名
         */
        private String studentName;

        /**
         * 签到类型
         */
        private Integer type;

        /**
         * 签到状态
         */
        private Integer status;

        /**
         * 签到时间
         */
        private LocalDateTime signTime;

        /**
         * 额外信息
         */
        private String extraInfo;

        /**
         * 创建时间
         */
        private LocalDateTime createTime;

        /**
         * 更新时间
         */
        private LocalDateTime updateTime;
    }
} 